約 2,912,886 件
https://w.atwiki.jp/sampleisbest/pages/285.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 コンソール アプリケーション プロジェクト名 fdmp3 アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト fdmp3.cpp #pragma comment(lib, "winmm") #include fcntl.h // _O_WTEXT #include io.h // _setmode #include stdio.h // _fileno #include string.h // memcmp #include tchar.h #include Windows.h #include map #include set #include string #define BUF_SIZE(10 * 1024 * 1024) // 型定義 typedef struct {// ファイル情報構造体 std wstring strPath; DWORD offset; int iDelFlag;// 削除フラグ int iDupFlag;// 重複フラグ } FileInfo; typedef std multimap DWORD, FileInfo mmfsfi; typedef std set std wstring setstr; // 関数プロトタイプ宣言 int files(const _TCHAR *ptcDir); int filecmp(LPCTSTR ptcFile1, LPCTSTR ptcFile2, DWORD offset1, DWORD offset2, DWORD size); int filedel(void); BOOL LoadMP3(LPCTSTR path, DWORD dataOffset, DWORD dataSize); // グローバル変数 mmfsfi g_mmap; setstr g_set; int g_iDelFlag = 0; //============================================================================== int _tmain(int argc, _TCHAR *argv[]) { mmfsfi iterator it; mmfsfi iterator itTarget; FileInfo *pfi; FileInfo *pfiTarget; _TCHAR atcDir[_MAX_PATH]; size_t size; int iCount; int i; // BOMなしUTF-16LE _setmode(_fileno(stdout), _O_WTEXT); _setmode(_fileno(stderr), _O_WTEXT); if (argc 2) { _ftprintf(stderr, _T("usage fdmp3 [-d] dir [...]\n")); return 1; } for (i = 1; i argc; i++) { if (argv[i][0] == _T( - )) { if (argv[i][1] == _T( d )) { g_iDelFlag = 1; } } else { _tcscpy_s(atcDir, argv[i]); size = _tcslen(atcDir); if (0 size atcDir[size - 1] == _T( \\ )) { atcDir[size - 1] = _T( \0 ); } files(atcDir); } } for (it = g_mmap.begin(); it != g_mmap.end(); it++) { pfi = (it- second); if (pfi- iDupFlag) continue; iCount = 0; for (itTarget = it; ++itTarget != g_mmap.end(); ) { if (itTarget- first != it- first) break; pfiTarget = (itTarget- second); if (pfiTarget- iDupFlag) continue; int ret = filecmp(pfi- strPath.c_str(), pfiTarget- strPath.c_str(), pfi- offset, pfiTarget- offset, it- first); if (ret == 0) { pfiTarget- iDupFlag = 1; if (iCount == 0) { _tprintf(_T("\n%u KB (%u B)\n"), (it- first + 1023) / 1024, it- first); _tprintf(_T("%s\n"), pfi- strPath.c_str()); } _tprintf(_T("%s\n"), pfiTarget- strPath.c_str()); iCount++; } } } if (g_iDelFlag) filedel(); return 0; } //------------------------------------------------------------------------------ int files(const TCHAR *ptcDir) { size_t sizeDir = _tcslen(ptcDir); if (_MAX_PATH = sizeDir + 4) { _ftprintf(stderr, _T("error パスが長過ぎます。%u[%s]\n"), sizeDir, ptcDir); return -1; } TCHAR atcPath[_MAX_PATH]; _stprintf_s(atcPath, _T("%s\\*.*"), ptcDir); FileInfo fi; fi.iDelFlag = g_iDelFlag; fi.iDupFlag = 0; _wfinddata_t fd; intptr_t handle = _tfindfirst(atcPath, fd); if (handle == -1) { _ftprintf(stderr, _T("error _tfindfirst[%s]\n"), ptcDir); return -1; } bool empty = true; do { if (_MAX_PATH = sizeDir + 1 + _tcslen(fd.name)) { _ftprintf(stderr, _T("error パスが長過ぎます。[%s][%s]\n"), ptcDir, fd.name); continue; } _stprintf_s(atcPath, _T("%s\\%s"), ptcDir, fd.name); if (fd.attrib _A_SUBDIR) { if (_tcscmp(fd.name, _T(".")) _tcscmp(fd.name, _T(".."))) { files(atcPath); empty = false; } } else { size_t len = _tcslen(fd.name); if (len = 4 || _tcsicmp(fd.name + len - 4, _T(".mp3"))) continue; std pair setstr iterator, bool pair = g_set.insert(atcPath); if (pair.second == true) { DWORD size; if (LoadMP3(atcPath, fi.offset, size)) { fi.strPath = atcPath; g_mmap.insert(mmfsfi value_type(size, fi)); //_tprintf(_T("%u %u %s\n"), fi.offset, size, atcPath); } } empty = false; } } while (_tfindnext(handle, fd) == 0); _findclose(handle); if (empty) { _ftprintf(stderr, _T("empty [%s]\n"), ptcDir); } return 0; } //------------------------------------------------------------------------------ int filecmp(LPCTSTR ptcFile1, LPCTSTR ptcFile2, DWORD offset1, DWORD offset2, DWORD size) { static char acBuf1[BUF_SIZE]; static char acBuf2[BUF_SIZE]; FILE *pFile1 = NULL; FILE *pFile2 = NULL; int iRetVal = -1; if (_tfopen_s( pFile1, ptcFile1, _T("rb")) != 0) { _ftprintf(stderr, _T("%s を開けません\n"), ptcFile1); goto Exit; } if (_tfopen_s( pFile2, ptcFile2, _T("rb")) != 0) { _ftprintf(stderr, _T("%s を開けません\n"), ptcFile2); goto Exit; } // offset分読み飛ばす fseek(pFile1, offset1, SEEK_SET); fseek(pFile2, offset2, SEEK_SET); for (size_t read = 0; ; ) { size_t count = min(size - read, BUF_SIZE); size_t sizeRead1 = fread(acBuf1, 1, count, pFile1); if (ferror(pFile1) != 0 || sizeRead1 != count) { _ftprintf(stderr, _T("error fread[%s]\n"), ptcFile1); goto Exit; } size_t sizeRead2 = fread(acBuf2, 1, count, pFile2); if (ferror(pFile2) != 0 || sizeRead2 != count) { _ftprintf(stderr, _T("error fread[%s]\n"), ptcFile2); goto Exit; } if (memcmp(acBuf1, acBuf2, sizeRead1) != 0) { iRetVal = 1; break; } read += count; if (size = read) { iRetVal = 0; break; } } Exit if (pFile2) fclose(pFile2); if (pFile1) fclose(pFile1); return iRetVal; } //------------------------------------------------------------------------------ int filedel(void) { mmfsfi iterator it; FileInfo *pfi; FILE *pFile; if (_tfopen_s( pFile, _T("finddup.log"), _T("wt,ccs=UNICODE"))) { _ftprintf(stderr, _T("ログファイルの作成に失敗しました\n")); return -1; } for(it = g_mmap.begin(); it != g_mmap.end(); it++) { pfi = (it- second); if (pfi- iDupFlag pfi- iDelFlag) { _ftprintf(pFile, _T("del \"%s\"\n"), pfi- strPath.c_str()); } } fclose(pFile); return 0; } BOOL LoadMP3(LPCTSTR path, DWORD dataOffset, DWORD dataSize) { // MP3ファイル部 HMMIO hmmio = mmioOpen((LPTSTR)path, NULL, MMIO_READ); if (hmmio == NULL) { _ftprintf(stderr, _T("%s を開けません\n"), path); return FALSE; } DWORD dwFile = mmioSeek(hmmio, 0, SEEK_END); LPBYTE lpFile = new BYTE[dwFile]; mmioSeek(hmmio, 0, SEEK_SET); mmioRead(hmmio, (HPSTR)lpFile, dwFile); mmioClose(hmmio, 0); // MP3データ部 dataOffset = 0; dataSize = dwFile; // ID3v1 if (128 = dwFile memcmp(lpFile + dwFile - 128, "TAG", 3) == 0) { dataSize -= 128; } // ID3v2 if (10 = dataSize memcmp(lpFile, "ID3", 3) == 0) { LPBYTE size = lpFile + 6; DWORD dwTagSize = ((size[0] 21)|(size[1] 14)|(size[2] 7)|size[3]) + 10; dataOffset = dwTagSize; dataSize -= dwTagSize; } delete[] lpFile; return TRUE; }
https://w.atwiki.jp/sampleisbest/pages/468.html
開発環境 Microsoft Visual Studio Community 2015 実行環境 Microsoft Windows 10 Home (64bit) プロジェクトの種類 Visual C++/Win32 コンソール アプリケーション プロジェクト名 fdread アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト、SDLチェック
https://w.atwiki.jp/sampleisbest/pages/276.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 WaveGraph アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode WaveGraph.cpp // WaveGraph5 Waveファイルグラフ表示 #pragma comment(lib, "winmm") #include Windows.h #include tchar.h #define SAFE_FREE(p)if (p) { free(p); p = NULL; } #define APP_NAMETEXT("WaveGraph") // 関数プロトタイプ宣言 void Trace(LPCTSTR format, ...); BOOL Load(LPTSTR pszFileName); BOOL ReadWaveFile(LPTSTR pszFileName); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void ScrollInfo(HWND hWnd); void OnDropFiles(HWND hWnd, WPARAM wParam); void OnSize(HWND hWnd, WPARAM wParam, LPARAM lParam); void OnHScroll(HWND hWnd, WPARAM wParam); void OnPaint(HWND hWnd); void PaintWaveform(HDC hdc, LONG top, LONG bottom, RECT rcPaint, int ch); void SetTitle(HWND hWnd); // 外部変数 SCROLLINFO siHorz; PBYTE waveformData = NULL; int waveformLen = 0; WAVEFORMATEX wfx; TCHAR szFileName[MAX_PATH]; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { // プログラム引数 LPTSTR lpCmdLine = GetCommandLine(); int argc; LPTSTR *argv = CommandLineToArgvW(lpCmdLine, argc); if (2 = argc) { Load(argv[1]); } // ウィンドウクラスの登録 WNDCLASSEX wcx; ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= WndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, IDC_ARROW); wcx.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1); wcx.lpszClassName= APP_NAME; if (RegisterClassEx( wcx) == 0) { return 0; } // ウィンドウの作成 HWND hWnd = CreateWindowEx( WS_EX_ACCEPTFILES, APP_NAME, APP_NAME, WS_OVERLAPPEDWINDOW | WS_HSCROLL, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { return 0; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); SetTitle(hWnd); // メッセージループ MSG msg; while (GetMessage( msg, NULL, 0, 0)) { TranslateMessage( msg); DispatchMessage( msg); } return msg.wParam; } void Trace(LPCTSTR format, ...) { va_list arg_ptr; TCHAR buffer[256]; int size; va_start(arg_ptr, format); size = _vsntprintf_s(buffer, _countof(buffer), _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size 0) { OutputDebugString(_T("...\n")); } } BOOL Load(LPTSTR pszFileName) { BOOL br = ReadWaveFile(pszFileName); _tcscpy_s(szFileName, pszFileName); return br; } BOOL ReadWaveFile(LPTSTR pszFileName) { MMRESULT mmr; SAFE_FREE(waveformData); waveformLen = 0; // Open HMMIO hmmio = mmioOpen(pszFileName, NULL, MMIO_READ); if (hmmio == NULL) { return FALSE; } // RIFFチャンク MMCKINFO ckParent; ckParent.fccType = mmioFOURCC( W , A , V , E ); mmr = mmioDescend(hmmio, ckParent, NULL, MMIO_FINDRIFF); if (mmr != MMSYSERR_NOERROR) { return FALSE; } // fmtチャンク MMCKINFO ckSub; ckSub.ckid = mmioFOURCC( f , m , t , ); mmr = mmioDescend(hmmio, ckSub, ckParent, MMIO_FINDCHUNK); if (mmr != MMSYSERR_NOERROR) { return FALSE; } LONG read = mmioRead(hmmio, (HPSTR) wfx, 16); if (read != 16) { return FALSE; } mmioAscend(hmmio, ckSub, 0); // dataチャンク ckSub.ckid = mmioFOURCC( d , a , t , a ); mmr = mmioDescend(hmmio, ckSub, ckParent, MMIO_FINDCHUNK); if (mmr != MMSYSERR_NOERROR) { return FALSE; } waveformData = (PBYTE)malloc(ckSub.cksize); if (waveformData == NULL) { return FALSE; } read = mmioRead(hmmio, (HPSTR)waveformData, ckSub.cksize); if (read != ckSub.cksize) { return FALSE; } waveformLen = ckSub.cksize / wfx.nBlockAlign; mmioAscend(hmmio, ckSub, 0); // RIFFチャンク mmioAscend(hmmio, ckParent, 0); // Close mmioClose(hmmio, 0); return TRUE; } //------------------------------------------------------------------------------ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT OnPaint(hWnd); return 0; case WM_HSCROLL OnHScroll(hWnd, wParam); return 0; case WM_SIZE OnSize(hWnd, wParam, lParam); return 0; case WM_DROPFILES OnDropFiles(hWnd, wParam); DragFinish((HDROP)wParam); return 0; case WM_CREATE ScrollInfo(hWnd); return 0; case WM_DESTROY SAFE_FREE(waveformData); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } void ScrollInfo(HWND hWnd) { RECT rc; GetClientRect(hWnd, rc); siHorz.cbSize= sizeof siHorz; siHorz.fMask= SIF_RANGE | SIF_PAGE | SIF_POS | SIF_DISABLENOSCROLL; siHorz.nMin= 0; siHorz.nMax= waveformLen - 1; siHorz.nPage= rc.right; siHorz.nPos= 0; SetScrollInfo(hWnd, SB_HORZ, siHorz, FALSE); } void OnDropFiles(HWND hWnd, WPARAM wParam) { HDROP hDrop = (HDROP)wParam; TCHAR szFile[MAX_PATH]; DragQueryFile(hDrop, 0, szFile, _countof(szFile)); Load(szFile); SetTitle(hWnd); ScrollInfo(hWnd); InvalidateRect(hWnd, NULL, TRUE); } void OnSize(HWND hWnd, WPARAM wParam, LPARAM lParam) { if (wParam == SIZE_MINIMIZED) return; siHorz.nPage= LOWORD(lParam); int nPosMax= max(siHorz.nMax - (int)siHorz.nPage + 1, 0); siHorz.nPos= min(siHorz.nPos, nPosMax); SetScrollInfo(hWnd, SB_HORZ, siHorz, TRUE); } void OnHScroll(HWND hWnd, WPARAM wParam) { int nPos = siHorz.nPos; switch (LOWORD(wParam)) { case SB_LINEUP nPos -= 10; break; case SB_LINEDOWN nPos += 10; break; case SB_PAGEUP nPos -= siHorz.nPage; break; case SB_PAGEDOWN nPos += siHorz.nPage; break; case SB_THUMBTRACK SCROLLINFO si; si.cbSize= sizeof si; si.fMask= SIF_TRACKPOS; if (GetScrollInfo(hWnd, SB_HORZ, si) != 0) { nPos = si.nTrackPos; } break; } int nPosMax = max(siHorz.nMax - (int)siHorz.nPage + 1, 0); nPos = min(nPos, nPosMax); nPos = max(nPos, 0); if (nPos == siHorz.nPos) return; ScrollWindowEx(hWnd, siHorz.nPos - nPos, 0, NULL, NULL, NULL, NULL, SW_INVALIDATE | SW_ERASE); siHorz.nPos = nPos; SetScrollInfo(hWnd, SB_HORZ, siHorz, TRUE); UpdateWindow(hWnd); } void OnPaint(HWND hWnd) { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, ps); RECT rc; GetClientRect(hWnd, rc); if (waveformData) { switch (wfx.nChannels) { case 1 PaintWaveform(hdc, rc.top, rc.bottom, ps.rcPaint, 0); break; case 2 LONG center = rc.bottom / 2; PaintWaveform(hdc, rc.top, center, ps.rcPaint, 0); PaintWaveform(hdc, center + 1, rc.bottom, ps.rcPaint, 1); MoveToEx(hdc, 0, center, NULL); LineTo(hdc, rc.right, center); break; } } EndPaint(hWnd, ps); } void PaintWaveform(HDC hdc, LONG top, LONG bottom, RECT rcPaint, int ch) { LONG height = bottom - top; HPEN pen = CreatePen(PS_SOLID, 0, RGB(0,0,255)); HGDIOBJ penOld = SelectObject(hdc, pen); for (int x = rcPaint.left; x rcPaint.right; x++) { int i = siHorz.nPos + x; if (waveformLen = i) break; int y; if (wfx.wBitsPerSample == 8) { y = top + height * (255 - waveformData[wfx.nChannels * i + ch]) / 256; } else { y = top + height * (32767 - ((short*)waveformData)[wfx.nChannels * i + ch]) / 65536; } MoveToEx(hdc, x, top + height / 2, NULL); LineTo(hdc, x, y); } SelectObject(hdc, penOld); DeleteObject(pen); } void SetTitle(HWND hWnd) { if (waveformData == NULL) { SetWindowText(hWnd, APP_NAME); return; } TCHAR str[512]; _stprintf_s(str, _T("%s [%uHz %ubit %uch] - %s"), szFileName, wfx.nSamplesPerSec, wfx.wBitsPerSample, wfx.nChannels, APP_NAME); SetWindowText(hWnd, str); }
https://w.atwiki.jp/2ch_big/
link_displaymode ☆⌒ BIG ビッグ 掲示板、速報、公式、その他 メニュー 1等になった判定【2010】 1等になった判定【2011】 1等になった判定【2006~2016】 1等が出た売り場【2006~2016】 1等が出た各販売経路のパーセント 販売経路のパーセント 投票状況を自分で取り込んで判定 転置 中止 商標 店舗でのBIG1等 BIG1等が出ない県 2等になった気分 確率 全部ハズレ 廃止 2等
https://w.atwiki.jp/sampleisbest/pages/432.html
開発環境 Microsoft Visual Studio Express 2013 for Windows Desktop 実行環境 Microsoft Windows 8.1 (64bit) プロジェクトの種類 Visual C++/Win32 プロジェクト プロジェクト名 mcirec アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト、SDLチェック
https://w.atwiki.jp/sampleisbest/pages/194.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 ImgView2 アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode 画像表示(エクスプローラの並び順) ImgView2.cpp // Unicode #include Windows.h #include CommCtrl.h #include shimgdata.h #include stdio.h #include string #include vector #include "resource.h" using namespace std; #define WIDTH(rect) ((rect).right - (rect).left) #define HEIGHT(rect) ((rect).bottom - (rect).top) #define SAFE_RELEASE(p) { if(p) { (p)- Release(); (p)=NULL; } } #define APP_NAME TEXT("ImgView2") typedef vector wstring VecStr; // 関数プロトタイプ宣言 void CreateFileList(LPCTSTR pszPath); BOOL GetFileList(HWND hExplorer, LPCTSTR pszFileName); BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam); BOOL IsImgFile(LPCTSTR pszPath); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL OnCommand(HWND hWnd, WPARAM wParam); void OnDelete(HWND hWnd); void OnDropFiles(HWND hWnd, WPARAM wParam); void OnSizeNormal(HWND hWnd); void OnSizeAdjust(HWND hWnd); void OnExecute(void); void OnPaint(HWND hWnd); void GetImage(HWND hWnd); BOOL MyGetFileTime(LPSYSTEMTIME pSystemTime, LPCTSTR pszFileName); // 外部変数構造体 static struct { TCHAR szBaseDir[MAX_PATH];// 基準ディレクトリ VecStr vsFileName;// ファイル名配列 VecStr size_type idxCurr;// 現在の位置 IShellImageDataFactory *pImgDatFac;// 画像データファクトリ IShellImageData *pImgDat;// 画像データ SIZE sizeImg;// 画像サイズ SIZE sizeDst;// 出力サイズ HWND hListView;// エクスプローラのリストビュー } g; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { // プログラム引数 LPTSTR pszCmdLine = GetCommandLine(); int argc; LPTSTR *argv = CommandLineToArgvW(pszCmdLine, argc); if (2 = argc) { CreateFileList(argv[1]); } // ウィンドウクラスの登録 WNDCLASSEX wcx; ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= WndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); wcx.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1); wcx.lpszClassName= APP_NAME; if (RegisterClassEx( wcx) == 0) { return 0; } // ウィンドウの作成 HWND hWnd = CreateWindowEx( WS_EX_ACCEPTFILES, APP_NAME, APP_NAME, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (hWnd == NULL) { return 0; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); // メッセージループ MSG msg; HACCEL hAccTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_MAIN)); while (GetMessage( msg, NULL, 0, 0)) { if (TranslateAccelerator(msg.hwnd, hAccTable, msg) == 0) { TranslateMessage( msg); DispatchMessage( msg); } } return msg.wParam; } //------------------------------------------------------------------------------ void CreateFileList(LPCTSTR pszPath) { TCHAR szDrive[_MAX_DRIVE]; TCHAR szDir[_MAX_DIR]; TCHAR szFName[_MAX_FNAME]; TCHAR szExt[_MAX_EXT]; TCHAR szFileName[_MAX_PATH]; g.vsFileName.clear(); g.idxCurr = -1; errno_t er = _wsplitpath_s(pszPath, szDrive, szDir, szFName, szExt); swprintf_s(g.szBaseDir, L"%s%s", szDrive, szDir); swprintf_s(szFileName, L"%s%s", szFName, szExt); HWND hExplorer = NULL; while (hExplorer = FindWindowEx(NULL, hExplorer, L"ExploreWClass", NULL)) { GetFileList(hExplorer, szFileName); if (0 = g.idxCurr) { break; } } if (g.idxCurr == -1) { g.vsFileName.clear(); g.vsFileName.push_back(pszPath); g.idxCurr = 0; } } //------------------------------------------------------------------------------ BOOL GetFileList(HWND hExplorer, LPCTSTR pszFileName) { // リストビュー g.hListView = NULL; BOOL br = EnumChildWindows(hExplorer, EnumWindowsProc, 0); if (g.hListView == NULL) return FALSE; // 対象となるリストビューのプロセスハンドルを得る DWORD dwProcId = 0; GetWindowThreadProcessId(g.hListView, dwProcId); HANDLE hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwProcId); if (hProc == NULL) return FALSE; // 他プロセス空間にメモリを確保 LPTSTR pbuf = (LPTSTR)VirtualAllocEx(hProc, NULL, MAX_PATH, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); LPLVITEM plvi = (LPLVITEM)VirtualAllocEx(hProc, NULL, sizeof (LVITEM), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); // 行数 int nRowNum = ListView_GetItemCount(g.hListView); VecStr size_type idx = 0; // ListView_GetItemText LVITEM lvi; ZeroMemory( lvi, sizeof (LVITEM)); lvi.iSubItem= 0; lvi.mask= LVIF_TEXT; lvi.pszText= pbuf; lvi.cchTextMax= MAX_PATH; for (int nRow = 0; nRow nRowNum; nRow++) { lvi.iItem = nRow; WriteProcessMemory(hProc, plvi, lvi, sizeof (LVITEM), NULL); BOOL br = SendMessage(g.hListView, LVM_GETITEM, 0, (LPARAM)plvi); if (br) { TCHAR szText[MAX_PATH]; ReadProcessMemory(hProc, pbuf, szText, MAX_PATH, NULL); if (IsImgFile(szText)) { g.vsFileName.push_back(szText); if (wcscmp(szText, pszFileName) == 0) { g.idxCurr = idx; } idx++; } } } VirtualFreeEx(hProc, plvi, 0, MEM_RELEASE); VirtualFreeEx(hProc, pbuf, 0, MEM_RELEASE); CloseHandle(hProc); return TRUE; } //------------------------------------------------------------------------------ BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) { TCHAR szBuf[256]; int nr = GetClassName(hWnd, szBuf, _countof(szBuf)); if (wcscmp(szBuf, WC_LISTVIEW) == 0) {// L"SysListView32" g.hListView = hWnd; return FALSE;// 打ち切り } BOOL br = EnumChildWindows(hWnd, EnumWindowsProc, lParam); return TRUE;// 続行 } //------------------------------------------------------------------------------ BOOL IsImgFile(LPCTSTR pszPath) { static LPCTSTR ext[] = {L".jpg", L".jpeg", L".gif", L".png"}; TCHAR szExt[_MAX_EXT]; _wsplitpath_s(pszPath, NULL, 0, NULL, 0, NULL, 0, szExt, _MAX_EXT); for (int n = 0; n _countof(ext); n++) { if (_wcsicmp(ext[n], szExt) == 0) { return TRUE; } } return FALSE; } //============================================================================== LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_PAINT OnPaint(hWnd); return 0; case WM_COMMAND if (OnCommand(hWnd, wParam)) { return 0; } break; case WM_DROPFILES OnDropFiles(hWnd, wParam); DragFinish((HDROP)wParam); return 0; case WM_CREATE CoInitialize(NULL); CoCreateInstance(CLSID_ShellImageDataFactory, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS( g.pImgDatFac)); GetImage(hWnd); return 0; case WM_DESTROY SAFE_RELEASE(g.pImgDat); SAFE_RELEASE(g.pImgDatFac); CoUninitialize(); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, uMsg, wParam, lParam); } //------------------------------------------------------------------------------ BOOL OnCommand(HWND hWnd, WPARAM wParam) { switch (LOWORD(wParam)) { case ID_RIGHT case ID_DOWN g.idxCurr++; if (g.vsFileName.size() = g.idxCurr) { g.idxCurr = 0; } break; case ID_LEFT case ID_UP if (g.idxCurr = 0) { g.idxCurr = g.vsFileName.size(); } g.idxCurr--; break; case ID_ENTER ShowWindow(hWnd, IsZoomed(hWnd) ? SW_SHOWNOACTIVATE SW_MAXIMIZE); break; case ID_SIZE_NORMAL OnSizeNormal(hWnd); // あえてスルー case ID_SIZE_ADJUST OnSizeAdjust(hWnd); break; case ID_EXECUTE OnExecute(); break; case ID_DELETE OnDelete(hWnd); break; case ID_ESCAPE DestroyWindow(hWnd); return TRUE; default return FALSE; } GetImage(hWnd); InvalidateRect(hWnd, NULL, FALSE);// ちらつき防止のため背景消去しない return TRUE; } //------------------------------------------------------------------------------ void OnDelete(HWND hWnd) { if (g.vsFileName.empty()) return; TCHAR szPath[MAX_PATH];// \0 2つで終わる要あり swprintf_s(szPath, L"%s%s%c", g.szBaseDir, g.vsFileName[g.idxCurr].c_str(), L \0 ); SHFILEOPSTRUCT fo; ZeroMemory( fo, sizeof fo); fo.hwnd= hWnd; fo.wFunc= FO_DELETE; fo.pFrom= szPath; fo.fFlags= FOF_ALLOWUNDO; SHFileOperation( fo); } //------------------------------------------------------------------------------ void OnDropFiles(HWND hWnd, WPARAM wParam) { HDROPhDrop; TCHARszPath[MAX_PATH]; hDrop = (HDROP)wParam; DragQueryFile(hDrop, 0, szPath, _countof(szPath)); CreateFileList(szPath); GetImage(hWnd); InvalidateRect(hWnd, NULL, FALSE);// ちらつき防止のため背景消去しない } //------------------------------------------------------------------------------ void OnSizeNormal(HWND hWnd) { if (g.pImgDat == NULL) return; g.sizeDst = g.sizeImg; RECT rcWorkArea;// タスクバーを除くデスクトップ領域 RECT rcWnd;// ウィンドウ領域 RECT rcClt;// クライアント領域 SIZE size;// ウィンドウ領域とクライアント領域の差分 SystemParametersInfo(SPI_GETWORKAREA, 0, rcWorkArea, 0); GetWindowRect(hWnd, rcWnd); GetClientRect(hWnd, rcClt); size.cx = WIDTH(rcWnd) - WIDTH(rcClt); size.cy = HEIGHT(rcWnd) - HEIGHT(rcClt); // デスクトップ領域からはみ出す場合、ウィンドウを左上方向に移動する if (rcWorkArea.right rcWnd.left + g.sizeDst.cx + size.cx) { rcWnd.left = 0; } if (rcWorkArea.bottom rcWnd.top + g.sizeDst.cy + size.cy) { rcWnd.top = 0; } // 最大クライアント領域に収める if (rcWorkArea.right - size.cx g.sizeDst.cx) { g.sizeDst.cx = rcWorkArea.right - size.cx; } if (rcWorkArea.bottom - size.cy g.sizeDst.cy) { g.sizeDst.cy = rcWorkArea.bottom - size.cy; } // アスペクト比の調整 if (g.sizeImg.cx g.sizeImg.cy * g.sizeDst.cx / g.sizeDst.cy) { g.sizeDst.cx = g.sizeDst.cy * g.sizeImg.cx / g.sizeImg.cy; } else { g.sizeDst.cy = g.sizeDst.cx * g.sizeImg.cy / g.sizeImg.cx; } // ウィンドウ位置のセット rcWnd.right = g.sizeDst.cx + size.cx; rcWnd.bottom = g.sizeDst.cy + size.cy; SetWindowPos(hWnd, NULL, rcWnd.left, rcWnd.top, rcWnd.right, rcWnd.bottom, SWP_NOZORDER); } //------------------------------------------------------------------------------ void OnSizeAdjust(HWND hWnd) { if (g.pImgDat == NULL) return; RECT rc; SetRect( rc, 0, 0, g.sizeDst.cx, g.sizeDst.cy); AdjustWindowRectEx( rc, WS_OVERLAPPEDWINDOW, FALSE, 0); SetWindowPos(hWnd, NULL, 0, 0, WIDTH(rc), HEIGHT(rc), SWP_NOZORDER | SWP_NOMOVE); } //------------------------------------------------------------------------------ void OnExecute(void) { if (g.vsFileName.empty()) return; TCHAR szFile[MAX_PATH]; TCHAR szParams[MAX_PATH]; GetModuleFileName(NULL, szFile, MAX_PATH); swprintf_s(szParams, L"\"%s%s\"", g.szBaseDir, g.vsFileName[g.idxCurr].c_str()); SHELLEXECUTEINFO ei; ZeroMemory( ei, sizeof ei); ei.cbSize= sizeof ei; ei.nShow= SW_SHOWNORMAL; ei.fMask= SEE_MASK_NOCLOSEPROCESS; ei.lpFile= szFile; ei.lpParameters= szParams; ShellExecuteEx( ei); } //------------------------------------------------------------------------------ void OnPaint(HWND hWnd) { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, ps); if (g.pImgDat == NULL) goto Exit; RECT rcClt; GetClientRect(hWnd, rcClt); // 画像とクライアント領域のアスペクト比を比較し // アスペクト比を維持したままクライアント領域に収める if (g.sizeImg.cx g.sizeImg.cy * rcClt.right / rcClt.bottom) { g.sizeDst.cx = rcClt.bottom * g.sizeImg.cx / g.sizeImg.cy; g.sizeDst.cy = rcClt.bottom; } else { g.sizeDst.cx = rcClt.right; g.sizeDst.cy = rcClt.right * g.sizeImg.cy / g.sizeImg.cx; } RECT rcDst; rcDst.left= (rcClt.right - g.sizeDst.cx) / 2; rcDst.top= (rcClt.bottom - g.sizeDst.cy) / 2; rcDst.right= rcDst.left + g.sizeDst.cx; rcDst.bottom= rcDst.top + g.sizeDst.cy; // 画像描画 RECT rcTmp; SetRect( rcTmp, 0, 0, g.sizeImg.cx, g.sizeImg.cy); g.pImgDat- Draw(hdc, rcDst, rcTmp); // 余白塗り潰し HBRUSH hbr = (HBRUSH)(COLOR_WINDOW + 1); if (rcClt.left rcDst.left) { CopyRect( rcTmp, rcClt); rcTmp.right = rcDst.left; FillRect(hdc, rcTmp, hbr); } if (rcClt.top rcDst.top) { CopyRect( rcTmp, rcClt); rcTmp.bottom = rcDst.top; FillRect(hdc, rcTmp, hbr); } if (rcDst.right rcClt.right) { CopyRect( rcTmp, rcClt); rcTmp.left = rcDst.right; FillRect(hdc, rcTmp, hbr); } if (rcDst.bottom rcClt.bottom) { CopyRect( rcTmp, rcClt); rcTmp.top = rcDst.bottom; FillRect(hdc, rcTmp, hbr); } Exit EndPaint(hWnd, ps); } //------------------------------------------------------------------------------ void GetImage(HWND hWnd) { SAFE_RELEASE(g.pImgDat); if (g.vsFileName.empty()) { SetWindowText(hWnd, APP_NAME); return; } // 画像ファイルの読み込み TCHAR szBuf[512]; LPCTSTR pszFileName = g.vsFileName[g.idxCurr].c_str(); swprintf_s(szBuf, L"%s%s", g.szBaseDir, pszFileName); HRESULT hr = g.pImgDatFac- CreateImageFromFile(szBuf, g.pImgDat); if (SUCCEEDED(hr)) { hr = g.pImgDat- Decode(SHIMGDEC_DEFAULT, 0, 0); } if (SUCCEEDED(hr)) { hr = g.pImgDat- GetSize( g.sizeImg); } if (FAILED(hr) || g.sizeImg.cx = 0 || g.sizeImg.cy = 0) { SAFE_RELEASE(g.pImgDat); g.sizeImg.cx = g.sizeImg.cy = 0; } // ファイル更新日時の取得 SYSTEMTIME st; MyGetFileTime( st, szBuf); // タイトルバー swprintf_s(szBuf, L"%s [%d/%d] %d/%02d/%02d %02d %02d %02d (%dx%d) - %s", pszFileName, g.idxCurr + 1, g.vsFileName.size(), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, g.sizeImg.cx, g.sizeImg.cy, APP_NAME); SetWindowText(hWnd, szBuf); } //------------------------------------------------------------------------------ BOOL MyGetFileTime(LPSYSTEMTIME pSystemTime, LPCTSTR pszFileName) { HANDLE hFile = CreateFile(pszFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { return FALSE; } FILETIME ftCreation; FILETIME ftLocal; GetFileTime(hFile, ftCreation, NULL, NULL); FileTimeToLocalFileTime( ftCreation, ftLocal); FileTimeToSystemTime( ftLocal, pSystemTime); CloseHandle(hFile); return TRUE; } resource.h #define ID_SIZE_ADJUST100 #define ID_SIZE_NORMAL101 #define ID_EXECUTE102 #define IDR_MAIN128 #define ID_ENTER129 #define ID_ESCAPE130 #define ID_LEFT131 #define ID_UP132 #define ID_RIGHT133 #define ID_DOWN134 #define ID_DELETE135 ImgView2.rc // resource script #include windows.h #include "resource.h" // アクセラレータ IDR_MAIN ACCELERATORS BEGIN VK_RETURN,ID_ENTER,VIRTKEY// 0x0D VK_ESCAPE,ID_ESCAPE,VIRTKEY// 0x1B VK_LEFT,ID_LEFT,VIRTKEY// 0x25 VK_UP,ID_UP,VIRTKEY// 0x26 VK_RIGHT,ID_RIGHT,VIRTKEY// 0x27 VK_DOWN,ID_DOWN,VIRTKEY// 0x28 VK_DELETE,ID_DELETE,VIRTKEY// 0x2E "1",ID_SIZE_ADJUST,VIRTKEY// 0x31 VK_NUMPAD1,ID_SIZE_ADJUST,VIRTKEY// 0x61 "2",ID_SIZE_NORMAL,VIRTKEY// 0x32 VK_NUMPAD2,ID_SIZE_NORMAL,VIRTKEY// 0x62 "3",ID_EXECUTE,VIRTKEY// 0x33 VK_NUMPAD3,ID_EXECUTE,VIRTKEY// 0x63 END
https://w.atwiki.jp/personal_kousatsu/pages/10.html
BIG5 StrengthFinder 34の資質 VIA-IS 24の美徳 価値観リスト 戦略的思考力 実行力 影響力 人間関係構築力 知恵 勇気 人間性 正義 節制 超越性 外向性 (内向性) 協調性 (自立性) 開放性 (保守性) 誠実性 (柔軟性) 神経症的傾向 楽天的鈍感
https://w.atwiki.jp/sampleisbest/pages/158.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 プロジェクト プロジェクト名 Shader1 アプリケーションの種類 Windows アプリケーション 追加のオプション 空のプロジェクト 文字セット Unicode Microsoft DirectX SDK (February 2010) 参考 頂点シェーダプログラムの基礎 Shader1.cpp /* [構成プロパティ]-[VC++ ディレクトリ] [インクルード ディレクトリ] C \Program Files\Microsoft DirectX SDK (February 2010)\Include [ライブラリ ディレクトリ] C \Program Files\Microsoft DirectX SDK (February 2010)\Lib\x86 Unicode文字セット */ #pragma comment(lib, "d3d9.lib") #pragma comment(lib, "d3dx9.lib") #include d3d9.h #include d3dx9.h #include stdio.h #define SAFE_RELEASE(x) { if (x) { x- Release(); x = NULL; } } #define CLASS_NAME TEXT("Shader1") #define WINDOW_NAME TEXT("Shader1") // 頂点定義 struct CUSTOMVTX { float x, y, z;// 頂点位置 DWORD color;// 頂点カラー }; #define CUSTOMFVF (D3DFVF_XYZ | D3DFVF_DIFFUSE) // 関数プロトタイプ宣言 void Trace(LPCTSTR format, ...); HWND CreateWnd(HINSTANCE hInstance); HRESULT InitDirect3D(HWND hWnd); LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // 外部変数構造体 static struct { LPDIRECT3D9 pD3D; LPDIRECT3DDEVICE9 pD3DDev; IDirect3DVertexBuffer9 *pVertex; IDirect3DVertexDeclaration9 *pDec; IDirect3DVertexShader9 *pShaderHandler; } g; //============================================================================== int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow) { MSG msg; msg.wParam = 0; // ウィンドウの作成 HWND hWnd = CreateWnd(hInstance); if (hWnd == NULL) { return 0; } // Direct3Dの初期化 HRESULT hr = InitDirect3D(hWnd); if (FAILED(hr)) { goto Exit; } ShowWindow(hWnd, nCmdShow); // メッセージループ float c = 0.0f; float addcolor[4];// 頂点カラー(RGB)に足す値 do { Sleep(1); if (PeekMessage( msg, NULL, 0, 0, PM_REMOVE)) { DispatchMessage( msg); } else { // Direct3Dの処理 g.pD3DDev- Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0); g.pD3DDev- BeginScene(); // 描画 c += 0.005f;// 足す値 addcolor[0] = addcolor[1] = addcolor[2] = c; g.pD3DDev- SetVertexShaderConstantF(4, addcolor, 1); g.pD3DDev- SetStreamSource(0, g.pVertex, 0, sizeof (CUSTOMVTX)); g.pD3DDev- SetVertexDeclaration(g.pDec); g.pD3DDev- DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 2); g.pD3DDev- EndScene(); g.pD3DDev- Present(NULL, NULL, NULL, NULL); } } while (msg.message != WM_QUIT); Exit SAFE_RELEASE(g.pShaderHandler); SAFE_RELEASE(g.pDec); SAFE_RELEASE(g.pVertex); SAFE_RELEASE(g.pD3DDev); SAFE_RELEASE(g.pD3D); return msg.wParam; } //------------------------------------------------------------------------------ void Trace(LPCTSTR format, ...) { va_list arg_ptr; TCHAR buffer[256]; int size; va_start(arg_ptr, format); size = _vsnwprintf_s(buffer, _TRUNCATE, format, arg_ptr); va_end(arg_ptr); OutputDebugString(buffer); if (size 0) { OutputDebugString(L"...\n"); } } //------------------------------------------------------------------------------ HWND CreateWnd(HINSTANCE hInstance) { // ウィンドウクラスの登録 WNDCLASSEX wcx; ZeroMemory( wcx, sizeof wcx); wcx.cbSize= sizeof wcx; wcx.style= CS_HREDRAW | CS_VREDRAW; wcx.lpfnWndProc= MainWndProc; wcx.hInstance= hInstance; wcx.hCursor= LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)); //wcx.hbrBackground= (HBRUSH)(COLOR_WINDOW + 1); wcx.lpszClassName= CLASS_NAME; if (RegisterClassEx( wcx) == 0) { return NULL; } // ウィンドウの作成 HWND hWnd = CreateWindow( CLASS_NAME, WINDOW_NAME, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); return hWnd; } //------------------------------------------------------------------------------ HRESULT InitDirect3D(HWND hWnd) { // Direct3Dの初期化 g.pD3D = Direct3DCreate9(D3D_SDK_VERSION); HRESULT hr = (g.pD3D) ? S_OK E_FAIL; D3DPRESENT_PARAMETERS d3dpp; ZeroMemory( d3dpp, sizeof d3dpp); d3dpp.BackBufferFormat= D3DFMT_UNKNOWN;// 0 d3dpp.MultiSampleType= D3DMULTISAMPLE_NONE;// 0 d3dpp.SwapEffect= D3DSWAPEFFECT_DISCARD;// 1 d3dpp.Windowed= TRUE;// windowed / full-screen d3dpp.AutoDepthStencilFormat= D3DFMT_UNKNOWN;// 0 if (SUCCEEDED(hr)) { hr = g.pD3D- CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, d3dpp, g.pD3DDev); } // 頂点の設定(小さな長方形) static const CUSTOMVTX v[] = { {-1.0f, -1.0f, 0.0f, 0xff0000ff}, {+1.0f, -1.0f, 0.0f, 0xffff0000}, {+1.0f, +1.0f, 0.0f, 0xff00ff00}, {-1.0f, +1.0f, 0.0f, 0xffffffff}, }; // 頂点バッファ作成と頂点情報の書き込み if (SUCCEEDED(hr)) { hr = g.pD3DDev- CreateVertexBuffer(sizeof v, D3DUSAGE_WRITEONLY, CUSTOMFVF, D3DPOOL_MANAGED, g.pVertex, NULL); } VOID *pData; if (SUCCEEDED(hr)) { hr = g.pVertex- Lock(0, sizeof v, pData, 0); } if (SUCCEEDED(hr)) { memcpy_s(pData, sizeof v, v, sizeof v); hr = g.pVertex- Unlock(); } // 頂点データ宣言(シェーダに伝える) static const D3DVERTEXELEMENT9 VtxElem[] = { {0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0}, {0, 12, D3DDECLTYPE_D3DCOLOR, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_COLOR, 0}, D3DDECL_END() }; if (SUCCEEDED(hr)) { hr = g.pD3DDev- CreateVertexDeclaration(VtxElem, g.pDec); } // シェーダバージョンの確認 if (SUCCEEDED(hr)) { D3DCAPS9 caps; hr = g.pD3D- GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, caps); Trace(L"VertexShaderVersion=%#x\n", caps.VertexShaderVersion); Trace(L"PixelShaderVersion=%#x\n", caps.PixelShaderVersion); } // シェーダ命令配列定義 static const char VShader[] = "vs_1_1\n" "dcl_positionv0\n" "dcl_colorv1\n" "m4x4oPos, v0, c0\n"// 頂点に変換行列を掛け算 "addoD0, v1, c4\n";// 頂点カラーに定数を足し算して出力 // シェーダ命令のコンパイル ID3DXBuffer *pShader = NULL; ID3DXBuffer *pError = NULL; if (SUCCEEDED(hr)) { hr = D3DXAssembleShader(VShader, sizeof VShader - 1, NULL, NULL, 0, pShader, pError); } // シェーダハンドラの生成 if (SUCCEEDED(hr)) { hr = g.pD3DDev- CreateVertexShader( (DWORD *)(pShader- GetBufferPointer()), g.pShaderHandler); } SAFE_RELEASE(pError); SAFE_RELEASE(pShader); // 変換行列の設定 D3DXMATRIX mat, matView, matProj; D3DXMatrixLookAtLH( matView, D3DXVECTOR3(0,0,5), D3DXVECTOR3(0,0,0), D3DXVECTOR3(0,1,0)); D3DXMatrixPerspectiveFovLH( matProj, 0.785398163f, 480.0f / 640.0f, 0.1f, 10000.0f); D3DXMatrixMultiply( mat, matView, matProj); // 変換行列を転置して定数レジスタc0~c3に登録する D3DXMatrixTranspose( mat, mat); if (SUCCEEDED(hr)) { hr = g.pD3DDev- SetVertexShaderConstantF(0, (float *) mat, 4); } // 頂点シェーダに切り替え if (SUCCEEDED(hr)) { hr = g.pD3DDev- SetVertexShader(g.pShaderHandler); } return hr; } //------------------------------------------------------------------------------ LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, uMsg, wParam, lParam); }
https://w.atwiki.jp/seosprendimai/pages/10.html
SEO Sprendimai - Profesionalios SEO Paslaugos Vilniuje Mes esame žaidimo viršuje, kai reikia reitingą mūsų klientams Google organinių paieškos ir verslo žemėlapių sąrašus. Mes siūlome geriausias SEO paslaugas Lietuvoje. Mes reitinguojame savo klientus pirmame puslapyje, šimtams tikslinių konkurencingų raktinių žodžių "Google" ir kitose pagrindinėse paieškos sistemose; mes rangas ir nacionalinių ir tarptautinių raktažodžių, kurie gauna tūkstančius paieškų kiekvieną mėnesį. Jei ieškote paieškos optimizavimo bendrovė Lietuvoje, mes numeris vienas pavadinimas, kad jūs galite pasitikėti, kad jums rezultatus savo verslą. Ilgą laiką, paieškos SEO Optimizacija buvo nepakankamai įvertintas aspektas interneto rinkodaros ir reklamos, bet nuo to laiko tapo gyvybiškai svarbus. Daugelis įmonių dabar įtraukė šią internetinės rinkodaros strategiją, kad taptų gerai įsitvirtinusios savo rinkoje ir labiau paklausios tarp savo tikslinių klientų. Kas yra SEO? SEO yra procesas, kai sukurtas srautas į verslo svetainę yra sustiprintas didinant jų matomumą "Google" paieškos sistemos rezultatuose. Ėjimas per procesą, mūsų SEO paslaugos apima nustatyti ir optimizuoti savo svetainę (onpage) ir pareikšti aukštos kokybės atgal nuorodas iš patikimų ir autoritetingų susijusių svetainių (offpage). Tada svetainė bus rodoma didesnė pirmuosiuose "Google" organinės paieškos rezultatų puslapiuose, kad būtų gauta raktinių žodžių informacija apie tai, apie ką yra svetainė. SEO paslaugų nauda Jūsų įmonei Kai mūsų SEO agentūra nustato kampaniją, pagrįstą paieškos optimizavimas, pirmoji nauda, kad jūs galite gauti, yra tai, kad jūsų svetainė bus tada turėti aukštesnę poziciją paieškos rezultatus ir daugiau lankytojų iš tikslinių lankytojų. Kai klientai ieško jūsų produktų ar paslaugų internete, yra didesnė tikimybė, kad jie jus suras iš karto. Internetiniai klientai linkę užtikrinti, kad paieškos rezultatų viršuje rastos svetainės yra svetainės, kuriose teikiamos geriausios paslaugos ir produktai. Būdamas rodoma šiose vietose bus daug lengviau jums užfiksuoti susidomėjimą ir dėmesį šių klientų. Pagerinus reitingą ir sąmoningumą, didėja eismas, o po to didėja pardavimai. Pajamų padidėjimas ateis natūraliai, nes padidėjo poveikio, kad jūsų svetainė gauna 24 valandas per parą, septynias dienas per savaitę, ir 365 dienas per metus. Search Engine Optimisation Iš Geriausių SEO Service Lietuvoje Kaip Lietuvos pirmaujančių SEO konsultavimo ekspertai mes dirbome su daugeliu įmonių ir įdėti naudoti įvairias išbandytas strategijas ir metodus, siekiant padidinti savo svetainės reitingą, galite būti tikri, kad jūsų pardavimai taip pat didės laikui bėgant. Mūsų konsultantai dirbs kartu su jumis kurdami geriausias strategijas ir metodus, atitinkančius jūsų poreikius, reikalavimus ir biudžetą. SEO Paslaugos Vilniuje - Įvadas į tai, ką mes darome SEO Sprendimai kaip viena iš geriausių šalies SEO agentūrų, mes esame įsipareigoję teikti pasaulinio lygio rezultatus, aukšto lygio reitingą ir nuolatinį augimą. Mūsų komanda žada įdėti į sunkų darbą, būtiną siekiant maksimaliai padidinti savo paieškos optimizavimo metodus, įskaitant naudojant mūsų vidaus įrankiai. Nesvarbu, ar tai smulkusis verslas, ar didelė korporacija, mes turime galimybę tinkamai atlikti veiksmus. Su mūsų paketas SEO paslaugu kaina, klientai gali individualizuoti savo rinkodaros kompaniją ir sukurti kažką verta. https //seosprendimai.lt/seo-paslaugos/
https://w.atwiki.jp/sampleisbest/pages/145.html
開発環境 Microsoft Visual C++ 2010 Express (SP1) 実行環境 Microsoft Windows XP Home Edition (SP3) プロジェクトの種類 Win32 コンソール アプリケーション プロジェクト名 ismbb アプリケーションの種類 コンソール アプリケーション 追加のオプション 空のプロジェクト ismbb.c #include mbctype.h #include stdio.h void PrintCodeTable(int nType) { int nHigh; int nLow; int nChar = 0; int nr; printf(" 0 1 2 3 4 5 6 7 8 9 A B C D E F\n"); for (nHigh = 0; nHigh 16; nHigh++) { printf("%X_", nHigh); for (nLow = 0; nLow 16; nLow++) { switch (nType) { case 0 nr = _ismbblead(nChar); break; case 1 nr = _ismbbtrail(nChar); break; } printf(" %c", nr ? o . ); nChar++; } printf("\n"); } } int main() { printf("\n[_ismbblead]\n"); PrintCodeTable(0); printf("\n[_ismbbtrail]\n"); PrintCodeTable(1); return 0; } 実行 [_ismbblead] 0 1 2 3 4 5 6 7 8 9 A B C D E F 0_ . . . . . . . . . . . . . . . . 1_ . . . . . . . . . . . . . . . . 2_ . . . . . . . . . . . . . . . . 3_ . . . . . . . . . . . . . . . . 4_ . . . . . . . . . . . . . . . . 5_ . . . . . . . . . . . . . . . . 6_ . . . . . . . . . . . . . . . . 7_ . . . . . . . . . . . . . . . . 8_ . o o o o o o o o o o o o o o o 9_ o o o o o o o o o o o o o o o o A_ . . . . . . . . . . . . . . . . B_ . . . . . . . . . . . . . . . . C_ . . . . . . . . . . . . . . . . D_ . . . . . . . . . . . . . . . . E_ o o o o o o o o o o o o o o o o F_ o o o o o o o o o o o o o . . . [_ismbbtrail] 0 1 2 3 4 5 6 7 8 9 A B C D E F 0_ . . . . . . . . . . . . . . . . 1_ . . . . . . . . . . . . . . . . 2_ . . . . . . . . . . . . . . . . 3_ . . . . . . . . . . . . . . . . 4_ o o o o o o o o o o o o o o o o 5_ o o o o o o o o o o o o o o o o 6_ o o o o o o o o o o o o o o o o 7_ o o o o o o o o o o o o o o o . 8_ o o o o o o o o o o o o o o o o 9_ o o o o o o o o o o o o o o o o A_ o o o o o o o o o o o o o o o o B_ o o o o o o o o o o o o o o o o C_ o o o o o o o o o o o o o o o o D_ o o o o o o o o o o o o o o o o E_ o o o o o o o o o o o o o o o o F_ o o o o o o o o o o o o o . . .